void maintain(SBTreeNode **node, char flag)
{
	if (!flag)
	{
		if ((*node)->lchild == NULL)
			return;
		if (getSize(((*node)->lchild)->lchild) > getSize((*node)->rchild))	// LL 型
			right_rotate(node);
		else
			if (getSize(((*node)->lchild)->rchild) > getSize((*node)->rchild)) // LR 型
			{
				left_rotate(&((*node)->lchild));
				right_rotate(node);
			}
			else
				return;
	}
	else
	{
		if ((*node)->rchild == NULL)
			return;
		if (getSize(((*node)->rchild)->rchild) > getSize((*node)->lchild))
			left_rotate(node);
		else
			if (getSize(((*node)->rchild)->lchild) > getSize((*node)->lchild))
			{
				right_rotate(&((*node)->rchild));
				left_rotate(node);
			}
			else
				return;
	}
	if (NULL != (*node)->lchild)
		maintain(&((*node)->lchild), 0);
	if (NULL != (*node)->rchild)
		maintain(&((*node)->rchild), 1);
	maintain(node, 0);
	maintain(node, 1);
	return;
}
